﻿using System;

public interface DrawAPI
{
    void DrawCircle(int radius, int x, int y);
}

public class RedCircle : DrawAPI
{
    public void DrawCircle(int radius, int x, int y)
    {
        Console.WriteLine($"Drawing circle color: red ,radius:{radius},x:{x},y:{y}");
    }
}

public class GreenCircle : DrawAPI
{
    public void DrawCircle(int radius, int x, int y)
    {
        Console.WriteLine($"Drawing circle color: green ,radius:{radius},x:{x},y:{y}");
    }
}

public abstract class Shape
{
    protected DrawAPI DrapApi;
    public Shape(DrawAPI drapApi)
    {
        this.DrapApi = drapApi;
    }

    public abstract void DrawCircle();
}


public class Circle : Shape
{
    private int radius, x, y;
    public Circle(DrawAPI drapApi, int radius, int x, int y)
        :base(drapApi)
    {
        this.radius = radius;
        this.x = x;
        this.y = y;
    }
    public override void DrawCircle()
    {
        this.DrapApi.DrawCircle(this.radius, this.x, this.y);
    }
}